# 1、编写一个学生方法，产生一堆学生对象（姓名），传入形参控制学生生成数量
from faker import Faker
faker = Faker(locale='zh_cn')
def stu1(nums:int)->list:
    str1 = ''
    for i in range(nums):
        str1 += str(faker.name()) + "\n"
    with open('stu.txt','w',encoding='utf-8')as f:
        f.write(str1)
    with open('stu.txt','r',encoding='utf-8') as f:
        all_lines = f.readlines()
    return all_lines
# print(stu1(10))

# 2、创建一个方法，用来生成普通人必备的信息：姓名、年龄、住址、身份证号、手机号，随机生成20个写入personinfo.txt里
# 格式：姓名：xxx  年龄：xxx 住址：xxx 身份证号：xxx
# from faker import Faker
import random
faker = Faker(locale='zh_cn')
def stu2(xinxi:int)->list:
    str2 = ''
    for i in range(xinxi):
        num = random.randint(0, 99)
        str2 += "姓名：" +str(faker.name()) + " 地址："+ str(faker.address()) + "  年龄："+ str(num) + "\n"
    with open('personinfo.txt','w',encoding='utf-8') as f:
        f.write(str2)
    with open('personinfo.txt','r',encoding='utf-8') as f:
        all_lines = f.readlines()
    return all_lines

print(stu2(10))
# 3、文本 student.txt中包含下面的内容
# zhangshan:30
# lisi:50
# wangwu:60
# lifei:70
# 期望能够统计出其中的内容，以dict的形式保存，
# 例如： {"zhangshan":30,"lisi":50,"wangwu":60,"lifei":70}
def students()->dict:
    dict1 = {}
    with open('student.txt','w',encoding='utf-8') as f:
        f.write("zhangshan:30\nlisi:50\nwangwu:60\nlifei:70")
    with open('student.txt','r',encoding='utf-8') as f:
        for line in f.readlines():
            line = line.strip()
            line_ele = line.split(':')
            dict1[line_ele[0]] = int(line_ele[1])
    return dict1


print(students())

print(students())

# 4、给你一个 非空 整数数组 nums ，除了某个元素只出现一次以外，其余每个元素均出现两次。找出那个只出现了一次的元素
def ints(nums:list):
    for i in nums:
        if nums.count(i) == 1:
            print(i)

ints("1,1,2,2,3,4,5")
# 5、输入：["1","a","b","3","5","8","_"] 想要提取里面得数字，并保存到一个列表中
ints = ["1","a","b","3","5","8","_"]
def int1(ints:int)->list:
    list1 = []
    for i in ints:
        if i in '0123456789':
            list1.append(i)
    return list1
# print(int1(ints))

# 6、写函数,函数接收的4个参数分别是:姓名,性别(默认为男),年龄,地址
# 用户通过input输入这4个内容(支持持续输入,Q或q退出),并传递给函数，函数接收到这些内容,将其追加到student_msg文件中
def personlist(name,sex,age,address):
    with open('student_msg.txt','w',encoding='utf-8') as f:
        f.write(f"姓名是：{name},性别为：{sex},年龄啊：{age},地址是：{address}\n")
        print("添加成功")
while True:
    name = input("请输入姓名：")
    if name == 'Q' or name == 'q':
        print("停止收集")
        break
    sex = input("请输入性别")
    if sex == 'Q' or sex == 'q':
        print("停止收集")
        break
    if sex:
        pass
    else:
        sex = '男'
    age = input("请输入年龄：")
    if age == 'Q' or age == 'q':
        print("停止收集")
        break
    address = input("请输入地址：")
    if address == 'Q' or address == 'q':
        print("停止收集")
        break
    personlist(name,sex,age,address)

# 7、打印功能菜单、添加学生信息、删除学生信息、修改学生信息、显示学生信息、退出系统，并且需要接收用户的输入，在根据输入内容调用相应函数实现相应功能（存入文件），模板图如下。每次对学生管理系统发生改动，要写入改动点到log.txt文本中
# 8、如今的社交软件层出不穷，虽然功能千变万化，但都具有好友管理系统的基本功能，包括添加好友、删除好友、备注好友、展示好友等。下面是一个简单的好友管理系统的功能菜单（存入文件）
# 好友管理系统中有5个功能，每个功能都对应一个序号，用户可根据提示“请输入您的选项”选择序号执行相应的操作，包括：
# 添加好友：用户根据提示“请输入要添加的好友：”输入要添加好友的姓名，添加后会提示“好友添加成功”。
# 删除好友：用户根据提示“请输入删除好友姓名：”输入要删除好友的姓名，删除后提示“删除成功”
# 备注好友：用户根据提示“请输入要修改的好友姓名：”和“请输入修改后的好友姓名：”分别输入修改前和修改后的好友姓名，修改后会提示“备注成功”。
# 展示好友：若用户还没有添加过好友，提示“好友列表为空”，否则返回每个好友的姓名。
# 退出：关闭好友管理系统。
# 本任务要求编写程序，模拟实现如上所述的好友管理系统。
# 文件读取要使用相对路径，确保在任何的电脑、终端都可以运行